package com.potenzacd.project.controller;


import com.potenzacd.project.entity.Result;
import com.potenzacd.project.entity.StatusCode;
import com.potenzacd.project.pojo.ProductApprovalInfo;
import com.potenzacd.project.pojo.ProductInfo;
import com.potenzacd.project.service.impl.ProductInfoBizFlowInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author Cuidongdong
 * @since 2021-01-26
 */
@RestController
@CrossOrigin
@RequestMapping("/project/product-info-biz-flow-info")
public class ProductInfoBizFlowInfoRestController {

    @Autowired
    private ProductInfoBizFlowInfoService productInfoBizFlowInfoService;
    /**
     * 将产品业务流程信息
     * 存为草稿(创建)
     * @param productInfo 要创建的产品基本信息,包含业务流程信息
     */
    @PostMapping("/save4Draft")
    public Result save4Draft(@RequestBody ProductInfo productInfo){
        productInfoBizFlowInfoService.save4Draft(productInfo);
        return new Result(true, StatusCode.OK,"产品业务流程存为草稿成功",null);
    }


    /**
     * 将产品业务流程信息
     * 提交审核(创建)
     * @param productInfo 要创建的产品基本信息,包含业务流程信息
     */
    @PostMapping("/save4Approval")
    public Result save4Approval(@RequestBody ProductInfo productInfo){
        productInfoBizFlowInfoService.save4Approval(productInfo);
        return new Result(true, StatusCode.OK,"产品业务流程提交审核成功",null);
    }


    /**
     * 将产品业务流程信息
     * 存为草稿(修改)
     * @param productInfo 要修改的产品基本信息,包含业务流程信息
     */
    @PostMapping("/edit4Draft")
    public Result edit4Draft(@RequestBody ProductInfo productInfo){
        productInfoBizFlowInfoService.edit4Draft(productInfo);
        return new Result(true, StatusCode.OK,"产品业务流程修改草稿成功",null);
    }


    /**
     * 将产品业务流程信息
     * 提交审核(修改)
     * @param productInfo 要修改的产品基本信息,包含业务流程信息
     */
    @PostMapping("/edit4Approval")
    public Result edit4Approval(@RequestBody ProductInfo productInfo){
        productInfoBizFlowInfoService.edit4Approval(productInfo);
        return new Result(true, StatusCode.OK,"产品业务流程提交审核修改成功",null);
    }


    /**
     * 将产品业务流程信息
     * 审核通过
     * @param productApprovalInfo 审核记录
     */
    @PostMapping("/pass")
    public Result pass(@RequestBody ProductApprovalInfo productApprovalInfo){
        productInfoBizFlowInfoService.pass(productApprovalInfo);
        return new Result(true, StatusCode.OK,"产品业务流程审核通过修改成功",null);
    }


    /**
     * 将产品业务流程信息
     * 审核不通过
     * @param productApprovalInfo 审核记录
     */
    @PostMapping("/notPass")
    public Result notPass(@RequestBody ProductApprovalInfo productApprovalInfo){
        productInfoBizFlowInfoService.notPass(productApprovalInfo);
        return new Result(true, StatusCode.OK,"产品业务流程审核不通过修改成功",null);
    }


    /**
     * 将产品业务流程信息
     * 再次审核
     * 审核失败之后,进行信息的修改,之后提交审核
     * @param productInfo 要修改的产品基本信息,包含业务流程信息
     */
    public void re4Approval(ProductInfo productInfo){

    }


    /**
     * 将产品业务流程信息
     * 作废
     * @param code 要作废的信息标识
     */
    @GetMapping("/abort/{code}")
    public Result abort(String code){
        this.productInfoBizFlowInfoService.abort(code);
        return new Result(true, StatusCode.OK,"产品业务流程信息存为作废成功",null);

    }


    /**
     * 产品业务流程信息
     * 查看详情
     * @param code 要查看的标识
     * @return 详情信息
     */
    @GetMapping("/detail/{code}")
    public Result detail(String code){
        ProductInfo detail = productInfoBizFlowInfoService.detail(code);
        return new Result(true, StatusCode.OK,"产品业务流程信息查看详情成功",detail);
    }

}

